home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 48
/
PCMania CD48_1.iso
/
pcmania
/
dscene48
/
ejemplo3.pas
< prev
Wrap
Pascal/Delphi Source File
|
1996-07-07
|
2KB
|
74 lines
PROGRAM mueve_un_cuadrado_por_pantalla_con_pantalla_virtual;
Uses Dos, Crt;
Procedure ModeSet(Mode : Byte); ASSEMBLER;
ASM
mov ah,0
mov al,[Mode]
int 10h
END;
Procedure Borra_Pantalla(Segmento : Word);
Begin
FillChar(Ptr(Segmento,0)^, 64000, 0);
End;
Procedure Pon_Cuadrado(X,Y,Segmento : Word);
VAR
iX, iY : Word;
Begin
For iY := Y to Y+10 do
Begin
For iX := X to X+10 do Mem[Segmento:(320*iY)+iX] := 9;
End;
End;
VAR
X : Word;
Y : Real;
Radio : Real;
Cont : Real;
Virtual : Pointer;
Begin
ModeSet($13);
GetMem(Virtual, 320*200);
Y:=200; X:=0;
Cont := x;
Radio := 100;
{ Vista previa de la trayectória }
While (X<320) AND (NOT KeyPressed) do
Begin
Mem[$A000:(320*(round(Sin(Cont)*Radio)+100))+X] := 15;
X:=X+1;
Cont := Cont + 0.05;
If Radio > 0 Then Radio := Radio - 0.3;
End;
ReadLN;
Y:=200; X:=0;
Cont := x;
Radio := 100;
While (X<320) AND (NOT KeyPressed) do
Begin
Borra_Pantalla(Seg(Virtual^));
Pon_Cuadrado(X,(round(Sin(Cont)*Radio))+100,Seg(Virtual^));
Move(Virtual^,Mem[$a000:0],64000);
X:=X+1;
Cont := Cont + 0.05;
If Radio > 0 Then Radio := Radio - 0.3;
End;
ModeSet(3);
FreeMem(Virtual, 320*200);
End.